Prior to installation on a computer, most applications are customized to better suit the needs of the user. Customizing applications provides a consistent experience to all users and reduces problems users have interacting with the software. Accordingly, software applications are generally deployed in a very specific manner. As an example, applications that an individual can purchase, download, and install from a Web site are typically customized by the vendor to include particular settings, preferences, defaults, etc., that are most likely to be useful to a typical end-user. In a different scenario, administrators responsible for deploying applications to client computers across large organizations typically pre-configure customizations in a manner to best suit various targeted groups of users. Thus, customization settings made for a particular application may be different for a group of users in the accounting department than for a group of users in the engineering department.
Current methods for implementing application customizations have various disadvantages. For example, one exemplary method for customizing an application requires a set of tools to implement the customizations. The customization tools are not included with the application itself, but instead must be accessed separately by a user or administrator before any customizations can be made. In addition, the customization tools work separately from one another and their applicability depends upon whether or not the application has already been installed.
In a pre-installation scenario, for example, using Windows Installer (MSI), available from Microsoft® Corporation of Redmond, Wash., a customization installation tool is used to read information from an application installation package (i.e., an MSI package) and present customization options to a user or administrator. The customization installation tool generates a transform based on input from a user that indicates the user's customization intent. The transform can be applied exclusively, and only one time, to the application installation package. Applying the transform to the installation package results in the software application being installed on a computer with the customizations specified during the pre-installation customization session. However, once the application is installed, the customization installation tool cannot be used again to update, alter, or fix customizations should the need arise due to an inadvertent customization mistake or customization requirements that may change over time.
Once an application has been installed, any changes to the customizations require the use of a second, post-installation customization tool. For example, if an administrator forgot to turn off a particular setting in the application during the above pre-installation customization session, he would have to start a new customization process over again, using a different post-installation customization tool. In a post-installation customization session, the post-installation customization tool generates a maintenance file that is loaded onto the computer to make changes to the application customizations according to the user's intent as entered during the post-installation customization session. Unlike the transform noted above in the pre-installation customization, the maintenance file can be used multiple times per product to make changes to the application customizations. However, each time a need arises to make additional changes to the customizations, an administrator must begin from scratch, using the post-installation customization tool to make appropriate customization alterations.
Thus, a significant disadvantage with current customization methods is that a user's/administrator's customization intent is tied exclusively to a particular manner of implementation. Any adjustment to that customization intent requires that the particular method of implementation be exercised again in its entirety. Another disadvantage is the disjointed manner in which customizations are made. That is, the use of pre- and post-installation customization tools requires that a user or administrator become familiar with two different tools in order to implement customizations on an application. Other disadvantages with current customization methods are that they are not integrated with the standard setup procedures of the applications and the customization tool(s) themselves must be accessed separately from the application media.
Accordingly, a need exists for an integrated application setup that expresses application customization intent in an agnostic manner that is indifferent to the way in which the customization intent is implemented.